package com.nineyang.controller;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;

/**
springboot 错误处理方案（如果springMVC没有对应的处理方案，会开启springboot默认的处理方案。）
    1.如果客户需要的是json，直接响应json格式错误信息。
    2.如果客户端需要的是html页面，则会按照以下方案：
        第一步（精确错误码文件）：去classpath:/templates/error/目录下找404.html，500.html等精确错误码.html文件。
               如果找不到，则去静态资源目录下的/error目录下找。如果还是找不到，才会进入下一步。
        第二步（模糊错误码文件）：去classpath:/templates/error/目录下找4xx.html，5xx.html等模糊错误码.html文件。
               如果找不到，则去静态资源目录下的/error目录下找。如果还是找不到，才会进入下一步。
        第三步（通用错误页面）：去找classpath:/templates/error.html如果找不到则进入下一步。
        第四步（默认错误处理）：如果上述所有步骤都未能找到合适的错误页面，Spring Boot 会使用内置的默认错误处理机制，即 /error 端点。
 springMVC 错误处理方案：
    1.局部控制：
        在控制器当中编写一个方法，方法使用@ExceptionHandler注解进行标注，凡是**这个控制器**当中出现了**对应的异常**，
        则走这个方法来进行异常的处理。局部生效。
    2.全局控制：
        也可以把以上局部生效的方法单独放到一个类当中，这个类使用@ControllerAdvice注解标注，凡是**任何控制器**当中出现了**对应的异常**，
        则走这个方法来进行异常的处理。全局生效。

 */
@RestController
public class IndexController {

    @GetMapping("/index/{id}")
    public String getResource(@PathVariable int id) {
        if (id == 1) {
            throw new IllegalArgumentException("无效ID：" + id);
        }
        return "Hello "+ id;
    }


//    @ExceptionHandler(IllegalArgumentException.class)
//    public String exceptionHandler(IllegalArgumentException e) {
//        return "错误信息："+ e.getMessage();
//    }


}
